package com.sg.dto.integration.component;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

/**
 * @desc MessageNumLoopStartDto
 * @使用场景
 */
@Data
public class MessageNumLoopStartDto extends BaseDto implements Serializable {

    /**
     * 身份人员ID
     */
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;

    /**
     * 账号
     */
    @ApiModelProperty("账号")
    private String userId;

    /**
     * 创建于空间ID
     */
    @ApiModelProperty("创建于空间ID")
    private String spaceId;

    /**
     * 创建于联盟应用ID
     */
    @ApiModelProperty("创建于联盟应用ID")
    private String appId;

    /**
     * 消息位置标识
     */
    @ApiModelProperty("消息位置标识")
    private String messageLocationTypeCode;

    /**
     * 消息数量主体类型 INDUCTION_RECORD:就职记录 ORIGINAL_ROLE_MEMBER:身份人员 ORG_OR_DEPT:组织部门 MEMBER_CHANNEL_RELATION:成员通道
     */
    @ApiModelProperty("消息数量主体类型")
    private String msgNumberSubjectType;

    /**
     * 消息数量主体ID
     */
    @ApiModelProperty("消息数量主体ID")
    private String msgNumberSubjectId;

    /**
     * 消息数量ID
     */
    @ApiModelProperty("消息数量ID")
    private String messageLocationRemindId;

    /**
     * 消息数
     */
    @ApiModelProperty("消息数")
    private Long messageNum;

    /**
     * 归属内容类型编码 INDUCTION_RECORD:就职记录 ORIGINAL_ROLE_MEMBER:身份人员 ORG_OR_DEPT:组织部门 MEMBER_CHANNEL_RELATION:成员通道 OMS_EVALUATION_TEMPLATE:评价模板
     */
    @ApiModelProperty("归属内容类型编码")
    private String surfaceCode;

    /**
     * 归属内容ID
     */
    @ApiModelProperty("归属内容ID")
    private String entityId;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        MessageNumLoopStartDto that = (MessageNumLoopStartDto) o;
        return (
                originalRoleMemberId == that.originalRoleMemberId &&
                        userId == that.userId &&
                        spaceId == that.spaceId &&
                        appId == that.appId &&
                        messageLocationTypeCode == that.messageLocationTypeCode &&
                        msgNumberSubjectType == that.msgNumberSubjectType &&
                        msgNumberSubjectId == that.msgNumberSubjectId &&
                        messageLocationRemindId == that.messageLocationRemindId &&
                        messageNum == that.messageNum &&
                        surfaceCode == that.surfaceCode &&
                        entityId == that.entityId
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                originalRoleMemberId,
                userId,
                spaceId,
                appId,
                messageLocationTypeCode,
                msgNumberSubjectType,
                msgNumberSubjectId,
                messageLocationRemindId,
                messageNum,
                surfaceCode,
                entityId
        );
    }

}
